import { createApp } from 'vue'
import Cookies from 'js-cookie'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
import '../src/static/css/headtap.css'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import router from "~/router/index.js"
import store from '~/store/index.js'
import directive from '~/directive/index.js' // directive
import '~/permission.js' 
// 注册指令
import plugins from '~/plugins/index'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import { useDict } from '~/utils/dict.js'
import { download } from '~/utils/request.js'
import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '~/utils/ruoyi.js'
// // 分页组件
import Pagination from '~/components/Pagination/index.vue'
// // 自定义表格工具组件
import RightToolbar from '~/components/RightToolbar/index.vue'
// // 文件上传组件
import FileUpload from "~/components/FileUpload/index.vue"
// // 图片上传组件
import ImageUpload from "~/components/ImageUpload/index.vue"
// // 图片预览组件
import ImagePreview from "~/components/ImagePreview/index.vue"
// // 自定义树选择组件
import TreeSelect from '~/components/TreeSelect/index.vue'
// // 字典标签组件
import DictTag from '~/components/DictTag/index.vue'

const app=createApp(App)
// 全局方法挂载
app.config.globalProperties.useDict = useDict
app.config.globalProperties.download = download
app.config.globalProperties.parseTime = parseTime
app.config.globalProperties.resetForm = resetForm
app.config.globalProperties.handleTree = handleTree
app.config.globalProperties.addDateRange = addDateRange
app.config.globalProperties.selectDictLabel = selectDictLabel
app.config.globalProperties.selectDictLabels = selectDictLabels

// 全局组件挂载
app.component('DictTag', DictTag)
app.component('Pagination', Pagination)
app.component('TreeSelect', TreeSelect)
app.component('FileUpload', FileUpload)
app.component('ImageUpload', ImageUpload)
app.component('ImagePreview', ImagePreview)
app.component('RightToolbar', RightToolbar)
directive(app)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
}
app.use(ElementPlus, {locale: zhCn})
import 'virtual:windi.css'
app.use(store)
app.use(plugins)
app.use(router).mount('#app')